Methods and Systems for Parallel Video Encoding and Decoding

ABSTRACT

Aspects of the present invention are related to systems and methods for parallel video encoding and decoding.

RELATED REFERENCES

This application is a continuation-in-part of U.S. patent applicationSer. No. 12/058,301, entitled “Methods and Systems for Parallel VideoEncoding and Decoding,” filed on Mar. 28, 2008, said application U.S.patent application Ser. No. 12/058,301 is hereby incorporated byreference herein, in its entirety.

FIELD OF THE INVENTION

Embodiments of the present invention relate generally to video codingand, in particular, to methods and systems for parallel video encodingand decoding.

BACKGROUND

State-of-the-art video-coding methods and standards, for exampleH.264/MPEG-4 AVC (H.264/AVC), may provide higher coding efficiency thanolder methods and standards at the expense of higher complexity.Increasing quality requirements and resolution requirements on videocoding methods and standards may also increase their complexity.Decoders that support parallel decoding may improve decoding speeds andreduce memory requirements. Additionally, advances in multi-coreprocessors may make encoders and decoders that support parallel decodingdesirable.

H.264/MPEG-4 AVC [Joint Video Team of ITU-T VCEG and ISO/IEC MPEG,“H.264: Advanced video coding for generic audiovisual services,” ITU-TRec. H.264 and ISO/IEC 14496-10 (MPEG4—Part 10), November 2007], whichis hereby incorporated by reference herein in its entirety, is a videocodec (coder/decoder) specification that uses macroblock predictionfollowed by residual coding to reduce temporal and spatial redundancy ina video sequence for compression efficiency.

SUMMARY

Some embodiments of the present invention comprise methods and systemsfor parallel entropy encoding and decoding of a video bitstream based onpartitioning of data into entropy slices that may be entropy encoded anddecoded independently.

In some embodiments of the present invention, a first portion and secondportion of an input compressed-video bitstream may be entropy decodedindependently. A block of samples of a video frame associated with thesecond portion of the input compressed-video bitstream may bereconstructed using decoded data from the first portion and the secondportion. Thus, the reconstruction neighbor definition and the entropydecoding neighbor definition are not the same.

In some embodiments of the present invention, an encoder may partitioninput data into entropy slices. The encoder may entropy encode theentropy slices independently. The encoder may form a bitstreamcomprising entropy-slice headers each of which may indicate the locationin the bitstream of the associated data for the entropy slice. In someembodiments of the present invention, a decoder may parse a receivedbitstream for entropy-slice headers, and the decoder may entropy decodea plurality of entropy slices according to a decoder-defined level ofparallelism.

In some embodiments of the present invention, data may be multiplexed ata picture level to form entropy slices. In some embodiments, one, ormore, entropy slices may correspond to prediction data, and one, ormore, entropy slices may correspond to residual data. In alternativeembodiments of the present invention, one, or more, entropy slices maycorrespond to each of a plurality of color planes.

In some embodiments of the present invention, a bitstream may betrans-coded to comprise entropy slices. In these embodiments, a receivedbitstream may be entropy decoded, a plurality of entropy slices may beconstructed, and each of the entropy slices may be independently entropyencoded and written to a trans-coded bitstream with an associatedentropy-slice header.

In some embodiments of the present invention, an encoder may partition areconstruction slice into a plurality of entropy slices, wherein thenumber of bins associated with each entropy slice in the plurality ofentropy slices does not exceed a predefined number of bins. Inalternative embodiments of the present invention, an encoder maypartition a reconstruction slice into a plurality of entropy slices,wherein the number of macroblocks associated with each entropy slice inthe plurality of entropy slices does not exceed a predefined number ofmacroblocks. In yet alternative embodiments of the present invention, anencoder may partition a reconstruction slice into a plurality of entropyslices, wherein the number of bits associated with each entropy slice inthe plurality of entropy slices does not exceed a predefined number ofbits.

The foregoing and other objectives, features, and advantages of theinvention will be more readily understood upon consideration of thefollowing detailed description of the invention taken in conjunctionwith the accompanying drawings.

BRIEF DESCRIPTION OF THE SEVERAL DRAWINGS

FIG. 1 is a picture showing an H.264/AVC video encoder (prior art);

FIG. 2 is a picture showing an H.264/AVC video decoder (prior art);

FIG. 3 is a picture showing an exemplary slice structure (prior art);

FIG. 4 is a picture showing an exemplary slice group structure (priorart);

FIG. 5 is a picture showing an exemplary slice partition according toembodiments of the present invention, wherein a picture may bepartitioned in at least one reconstruction slice and a reconstructionslice may be partitioned into more than one entropy slice;

FIG. 6 is chart showing exemplary embodiments of the present inventioncomprising an entropy slice;

FIG. 7 is a chart showing exemplary embodiments of the present inventioncomprising parallel entropy decoding of multiple entropy slices followedby slice reconstruction;

FIG. 8 is a chart showing exemplary embodiments of the present inventioncomprising prediction data/residual data multiplexing at the picturelevel for entropy slice construction;

FIG. 9 is a chart showing exemplary embodiments of the present inventioncomprising color-plane multiplexing at the picture level for entropyslice construction;

FIG. 10 is a chart showing exemplary embodiments of the presentinvention comprising trans-coding a bitstream by entropy decoding,forming entropy slices and entropy encoding;

FIG. 11 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein the number of bins associated witheach entropy slice in the plurality of entropy slices does not exceed apredefined number of bins;

FIG. 12 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein bins may be associated with anentropy slice until the number of bins in the entropy slice exceeds athreshold based on a predefined maximum number of bins;

FIG. 13 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein the number of bins associated witheach entropy slice in the plurality of entropy slices does not exceed apredefined number of bins and each reconstruction slice contains no morethan a predefined number of macroblocks;

FIG. 14 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein bins may be associated with anentropy slice until the number of bins in the entropy slice exceeds athreshold based on a predefined maximum number of bins and eachreconstruction slice contains no more than a predefined number ofmacroblocks;

FIG. 15 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein the number of bits associated witheach entropy slice in the plurality of entropy slices does not exceed apredefined number of bits; and

FIG. 16 is a chart showing exemplary embodiments of the presentinvention comprising partitioning a reconstruction slice into aplurality of entropy slices, wherein bits may be associated with anentropy slice until the number of bits in the entropy slices exceeds athreshold based on a predefined maximum number of bits.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Embodiments of the present invention will be best understood byreference to the drawings, wherein like parts are designated by likenumerals throughout. The figures listed above are expressly incorporatedas part of this detailed description.

It will be readily understood that the components of the presentinvention, as generally described and illustrated in the figures herein,could be arranged and designed in a wide variety of differentconfigurations. Thus, the following more detailed description of theembodiments of the methods and systems of the present invention is notintended to limit the scope of the invention but it is merelyrepresentative of the presently preferred embodiments of the invention.

Elements of embodiments of the present invention may be embodied inhardware, firmware and/or software. While exemplary embodiments revealedherein may only describe one of these forms, it is to be understood thatone skilled in the art would be able to effectuate these elements in anyof these forms while resting within the scope of the present invention.

While any video coder/decoder (codec) that uses entropyencoding/decoding may be accommodated by embodiments of the presentinvention, exemplary embodiments of the present invention will beillustrated in relation to an H.264/AVC encoder and an H.264/AVCdecoder. This is intended for illustration of embodiments of the presentinvention and not limitation.

State-of-the-art video-coding methods and standards, for exampleH.264/AVC, may provide higher coding efficiency than older methods andstandards at the expense of higher complexity. Increasing qualityrequirements and resolution requirements on video coding methods andstandards may also increase their complexity. Decoders that supportparallel decoding may improve decoding speeds and reduce memoryrequirements. Additionally, advances in multi-core processors may makeencoders and decoders that support parallel decoding desirable.

H.264/AVC, and many other video coding standards and methods, are basedon a block-based hybrid video-coding approach, wherein the source-codingalgorithm is a hybrid of inter-picture, also considered inter-frame,prediction, intra-picture, also considered intra-frame, prediction andtransform coding of a prediction residual. Inter-frame prediction mayexploit temporal redundancies, and intra-frame and transform coding ofthe prediction residual may exploit spatial redundancies.

FIG. 1 shows a block diagram of an exemplary H.264/AVC video encoder 2.An input picture 4, also considered a frame, may be presented forencoding. A predicted signal 6 and a residual signal 8 may be produced,wherein the predicted signal 6 may be based on either an inter-frameprediction 10 or an intra-frame prediction 12. The inter-frameprediction 10 may be determined by motion compensating 14 a stored,reference picture 16, also considered reference frame, using motioninformation 19 determined by a motion estimation 18 process between theinput frame 4 and the reference frame 16. The intra-frame prediction 12may be determined 20 using a decoded signal 22. The residual signal 8may be determined by subtracting the input 4 from the prediction 6. Theresidual signal 8 is transformed, scaled and quantized 24, therebyproducing quantized, transform coefficients 26. The decoded signal 22may be generated by adding the predicted signal 6 to a signal 28generated by inverse transforming, scaling and inverse quantizing 30 thequantized, transform coefficients 26. The motion information 19 and thequantized, transform coefficients 26 may be entropy coded 32 and writtento the compressed-video bitstream 34. An output image region 38, forexample a portion of the reference frame, may be generated at theencoder 2 by filtering 36 the reconstructed, pre-filtered signal 22.

FIG. 2 shows a block diagram of an exemplary H.264/AVC video decoder 50.An input signal 52, also considered a bitstream, may be presented fordecoding. Received symbols may be entropy decoded 54, thereby producingmotion information 56 and quantized, scaled, transform coefficients 58.The motion information 56 may be combined 60 with a portion of areference frame 62 which may reside in frame memory 64, and aninter-frame prediction 68 may be generated. The quantized, scaled,transform coefficients 58 may be inverse quantized, scaled and inversetransformed 62, thereby producing a decoded residual signal 70. Theresidual signal 70 may be added to a prediction signal: either theinter-frame prediction signal 68 or an intra-frame prediction signal 76.The intra-frame prediction signal 76 may be predicted 74 from previouslydecoded information in the current frame 72. The combined signal 72 maybe filtered 80 and the filtered signal 82 may be written to frame memory64.

In H.264/AVC, an input picture is partitioned into fixed-sizemacroblocks, wherein each macroblock covers a rectangular picture areaof 16×16 samples of the luma component and 8×8 samples of each of thetwo chroma components. The decoding process of the H.264/AVC standard isspecified for processing units which are macroblocks. The entropydecoder 54 parses the syntax elements of the compressed-video bitstream52 and de-multiplexes them. H.264/AVC specifies two alternative methodsof entropy decoding: a low-complexity technique that is based on theusage of context-adaptively switched sets of variable length codes,referred to as CAVLC, and the computationally more demanding algorithmof context-based adaptively binary arithmetic coding, referred to asCABAC. In both entropy decoding methods, decoding of a current symbolmay rely on previously, correctly decoded symbols and adaptively updatedcontext models. In addition, different data information, for example,prediction data information, residual data information and differentcolor planes, may be multiplexed together. De-multiplexing may not bedone until elements are entropy decoded.

After entropy decoding, a macroblock may be reconstructed by obtaining:the residual signal through inverse quantization and the inversetransform, and the prediction signal, either the intra-frame predictionsignal or the inter-frame prediction signal. Blocking distortion may bereduced by applying a de-blocking filter to every decoded macroblock. Noprocessing may begin until the input signal is entropy decoded, therebymaking entropy decoding a potential bottleneck in decoding.

Similarly, in codecs in which alternative prediction mechanisms may beallowed, for example, inter-layer prediction in H.264/AVC or inter-layerprediction in other scalable codecs, entropy decoding may be requisiteprior to all processing at the decoder, thereby making entropy decodinga potential bottleneck.

In H.264/AVC, an input picture comprising a plurality of macroblocks maybe partitioned into one or several slices. The values of the samples inthe area of the picture that a slice represents may be correctly decodedwithout the use of data from other slices provided that the referencepictures used at the encoder and the decoder are identical. Therefore,entropy decoding and macroblock reconstruction for a slice do not dependon other slices. In particular, the entropy coding state is reset at thestart of each slice. The data in other slices are marked as unavailablewhen defining neighborhood availability for both entropy decoding andreconstruction. In H.264/AVC, slices may be entropy decoded andreconstructed in parallel. No intra prediction and motion-vectorprediction are allowed across the slice boundary. De-blocking filteringmay use information across slice boundaries.

FIG. 3 shows an exemplary video picture 90 comprising eleven macroblocksin the horizontal direction and nine macroblocks in the verticaldirection (nine exemplary macroblocks labeled 91-99). FIG. 3 shows threeexemplary slices: a first slice denoted “SLICE #0” 100, a second slicedenoted “SLICE #1” 101 and a third slice denoted “SLICE #2” 102. AnH.264/AVC decoder may decode and reconstruct the three slices 100, 101,102 in parallel. At the beginning of the decoding/reconstruction processfor each slice, context models are initialized or reset and macroblocksin other slices are marked as unavailable for both entropy decoding andmacroblock reconstruction. Thus, for a macroblock, for example, themacroblock labeled 93, in “SLICE #1,” macroblocks (for example,macroblocks labeled 91 and 92) in “SLICE #0” may not be used for contextmodel selection or reconstruction. Whereas, for a macroblock, forexample, the macroblock labeled 95, in “SLICE #1,” other macroblocks(for example, macroblocks labeled 93 and 94) in “SLICE #1” may be usedfor context model selection or reconstruction. Therefore, entropydecoding and macroblock reconstruction must proceed serially within aslice. Unless slices are defined using flexible macroblock ordering(FMO), macroblocks within a slice are processed in the order of a rasterscan.

Flexible macroblock ordering defines a slice group to modify how apicture is partitioned into slices. The macroblocks in a slice group aredefined by a macroblock-to-slice-group map, which is signaled by thecontent of the picture parameter set and additional information in theslice headers. The macroblock-to-slice-group map consists of aslice-group identification number for each macroblock in the picture.The slice-group identification number specifies to which slice group theassociated macroblock belongs. Each slice group may be partitioned intoone or more slices, wherein a slice is a sequence of macroblocks withinthe same slice group that is processed in the order of a raster scanwithin the set of macroblocks of a particular slice group. Entropydecoding and macroblock reconstruction must proceed serially within aslice.

FIG. 4 depicts an exemplary macroblock allocation into three slicegroups: a first slice group denoted “SLICE GROUP #0” 103, a second slicegroup denoted “SLICE GROUP #1” 104 and a third slice group denoted“SLICE GROUP #2” 105. These slice groups 103, 104, 105 may be associatedwith two foreground regions and a background region, respectively, inthe picture 90.

Some embodiments of the present invention may comprise partitioning apicture into one or more reconstruction slices, wherein a reconstructionslice may be self-contained in the respect that values of the samples inthe area of the picture that the reconstruction slice represents may becorrectly reconstructed without use of data from other reconstructionslices, provided that the references pictures used are identical at theencoder and the decoder. All reconstructed macroblocks within areconstruction slice may be available in the neighborhood definition forreconstruction.

Some embodiments of the present invention may comprise partitioning areconstruction slice into more than one entropy slice, wherein anentropy slice may be self-contained in the respect that symbol values inthe area of the picture that the entropy slice represents may becorrectly entropy decoded without the use of data from other entropyslices. In some embodiments of the present invention, the entropy codingstate may be reset at the decoding start of each entropy slice. In someembodiments of the present invention, the data in other entropy slicesmay be marked as unavailable when defining neighborhood availability forentropy decoding. In some embodiments of the present invention,macroblocks in other entropy slices may not be used in a current block'scontext model selection. In some embodiments of the present invention,the context models may be updated only within an entropy slice. In theseembodiments of the present invention, each entropy decoder associatedwith an entropy slice may maintain its own set of context models.

ITU Telecommunication Standardization Sector, Study Group16—Contribution 405 entitled “Entropy slices for parallel entropydecoding,” April 2008, is hereby incorporated by reference herein in itsentirety.

Some embodiments of the present invention may comprise CABACencoding/decoding. The CABAC encoding process includes the followingfour elementary steps: binarization; context model selection; binaryarithmetic coding; and probability update.

Binarization: A non-binary-valued symbol (for example, a transformcoefficient, a motion vector, or other coding data) is converted into abinary code, also referred to as a bin string or a binarized symbol.When a binary-valued syntax element is given, the initial step ofbinarization may be bypassed. A binary-valued syntax element or anelement of a binarized symbol may be referred to as a bin.

For each bin, the following may be performed:

Context Model Selection: A context model is a probability model for oneor more bins. The context model comprises, for each bin, the probabilityof the bin being a “1” or a “0.” The model may be chosen for a selectionof available models depending on the statistics of recently coded datasymbols, usually based on the left and above neighboring symbols, ifavailable.

Binary Arithmetic Coding: An arithmetic coder encodes each bin accordingto the selected probability model and is based on recursive intervalsubdivision.

Probability Update: The selected context model is updated based on theactual coded value.

In some embodiments of the present invention comprising CABACencoding/decoding, at the decoding start of an entropy slice, all of thecontext models may be initialized or reset to predefined models.

Some embodiments of the present invention may be understood in relationto FIG. 5. FIG. 5 shows an exemplary video frame 110 comprising elevenmacroblocks in the horizontal direction and nine macroblocks in thevertical direction (nine exemplary macroblocks labeled 115-123). FIG. 5shows three exemplary reconstruction slices: a first reconstructionslice denoted “R_SLICE #0” 111, a second reconstruction slice denoted“R_SLICE #1” 112 and a third reconstruction slice denoted “R_SLICE #2”113. FIG. 5 further shows a partitioning of the second reconstructionslice “R_SLICE #1” 112 into three entropy slices: a first entropy slicedenoted “E_SLICE #0” shown in cross-hatch 114, a second entropy slicedenoted “E_SLICE #1” shown in vertical-hatch 115 and a third entropyslice denoted “E_SLICE #2” shown in angle-hatch 116. Each entropy slice114, 115, 116 may be entropy decoded in parallel.

In some embodiments of the present invention, only data from macroblockswithin an entropy slice may be available for context model selectionduring entropy decoding of the entropy slice. All other macroblocks maybe marked as unavailable. For this exemplary partitioning, macroblockslabeled 117 and 118 are unavailable for context model selection whendecoding symbols corresponding to the area of macroblock labeled 119because macroblocks labeled 117 and 118 are outside of the entropy slicecontaining macroblock 119. However, these macroblocks 117, 118 areavailable when macroblock 119 is reconstructed.

In some embodiments of the present invention, an encoder may determinewhether or not to partition a reconstruction slice into entropy slices,and the encoder may signal the decision in the bitstream. In someembodiments of the present invention, the signal may comprise anentropy-slice flag, which may be denoted “entropy_slice_flag” in someembodiments of the present invention.

Some decoder embodiments of the present invention may be described inrelation to FIG. 6. In these embodiments, an entropy-slice flag may beexamined 130, and if the entropy-slice flag indicates that there are no132 entropy slices associated with a picture, or a reconstruction slice,then the header may be parsed 134 as a regular slice header. The entropydecoder state may be reset 136, and the neighbor information for theentropy decoding and the reconstruction may be defined 138. The slicedata may then be entropy decoded 140, and the slice may be reconstructed142. If the entropy-slice flag indicates there are 146 entropy slicesassociated with a picture, or a reconstruction slice, then the headermay be parsed 148 as an entropy-slice header. The entropy decoder statemay be reset 150, the neighbor information for entropy decoding may bedefined 152 and the entropy-slice data may be entropy decoded 154. Theneighbor information for reconstruction may then be defined 156, and theslice may be reconstructed 142. After slice reconstruction 142, the nextslice, or picture, may be examined 158.

Some alternative decoder embodiments of the present invention may bedescribed in relation to FIG. 7. In these embodiments, the decoder maybe capable of parallel decoding and may define its own degree ofparallelism, for example, consider a decoder comprising the capabilityof decoding N entropy slices in parallel. The decoder may identify 170 Nentropy slices. In some embodiments of the present invention, if fewerthan N entropy slices are available in the current picture, orreconstruction slice, the decoder may decode entropy slices fromsubsequent pictures, or reconstruction slices, if they are available. Inalternative embodiments, the decoder may wait until the current picture,or reconstruction slice, is completely processed before decodingportions of a subsequent picture, or reconstruction slice. Afteridentifying 170 up to N entropy slices, each of the identified entropyslices may be independently entropy decoded. A first entropy slice maybe decoded 172-176. The decoding 172-176 of the first entropy slice maycomprise resetting the decoder state 172. In some embodiments comprisingCABAC entropy decoding, the CABAC state may be reset. The neighborinformation for the entropy decoding of the first entropy slice may bedefined 174, and the first entropy slice data may be decoded 176. Foreach of the up to N entropy slices, these steps may be performed(178-182 for the Nth entropy slice). In some embodiments of the presentinvention, the decoder may reconstruct 184 the entropy slices when allof the entropy slices are entropy decoded. In alternative embodiments ofthe present invention, the decoder may begin reconstruction 184 afterone or more entropy slices are decoded.

In some embodiments of the present invention, when there are more than Nentropy slices, a decode thread may begin entropy decoding a nextentropy slice upon the completion of entropy decoding of an entropyslice. Thus when a thread finishes entropy decoding a low complexityentropy slice, the thread may commence decoding additional entropyslices without waiting for other threads to finish their decoding.

In some embodiments of the present invention which may accommodate anexisting standard or method, an entropy slice may share most of theslice attributes of a regular slice according to the standard or method.Therefore, an entropy slice may require a small header. In someembodiments of the present invention, the entropy slice header may allowa decoder to identify the start of an entropy slice and start entropydecoding. In some embodiments, at the start of a picture, or areconstruction slice, the entropy slice header may be the regularheader, or a reconstruction slice header.

In some embodiments of the present invention comprising an H.264/AVCcodec, an entropy slice may be signaled by adding a new bit,“entropy_slice_flag” to the existing slice header. Table 1 lists thesyntax for an entropy slice header according to embodiments of thepresent invention, wherein C indicates Category and Descriptor u(1),ue(v) indicate some fixed length or variable length coding methods.Embodiments of the present invention comprising an “entropy_slice_flag”may realize improved coding efficiency.

“first_mb_in_slice” specifies the address of the first macroblock in theentropy slice associated with the entropy-slice header. In someembodiments, the entropy slice may comprise a sequence of macroblocks.

“cabac_init_idc” specifies the index for determining the initializationtable used in the initialization process for the context mode.

TABLE 1 Syntax Table for Entropy Slice Header slice_header( ) { CDescriptor entropy_slice_flag 2 u(1) if (entropy_slice_flag) {first_mb_in_slice 2 ue(v) if (entropy_coding_mode_flag && slice_type !=I && slice_type != SI) cabac_init_idc 2 ue(v) } } else { a regular sliceheader ... } }

In some embodiments of the present invention, an entropy slice may beassigned a different network abstraction layer (NAL) unit type from theregular slices. In these embodiments, a decoder may distinguish betweenregular slices and entropy slices based on the NAL unit type. In theseembodiments, the bit field “entropy_slice_flag” is not required.

In some embodiments of the present invention, the bit field“entropy_slice_flag” may not be transmitted in all profiles. In someembodiments of the present invention, the bit field “entropy_slice_flag”may not be transmitted in a baseline profile, but the bit field“entropy_slice_flag” may be transmitted in higher profiles such as amain, an extended or a professional profile. In some embodiments of thepresent invention, the bit field “entropy_slice_flag” may only betransmitted in bitstreams associated with characteristics greater than afixed characteristic value. Exemplary characteristics may includespatial resolution, frame rate, bit depth, bit rate and other bitstreamcharacteristics. In some embodiments of the present invention, the bitfield “entropy_slice_flag” may only be transmitted in bitstreamsassociated with spatial resolutions greater than 1920×1080 interlaced.In some embodiments of the present invention, the bit field“entropy_slice_flag” may only be transmitted in bitstreams associatedwith spatial resolutions greater than 1920×1080 progressive. In someembodiments of the present invention, if the bit field“entropy_slice_flag” is not transmitted, a default value may be used.

In some embodiments of the present invention, an entropy slice may beconstructed by altering the data multiplexing. In some embodiments ofthe present invention, the group of symbols contained in an entropyslice may be multiplexed at the macroblock level. In alternativeembodiments of the present invention, the group of symbols contained inan entropy slice may be multiplexed at the picture level. In otheralternative embodiments of the present invention, the group of symbolscontained in an entropy slice may be multiplexed by data type. In yetalternative embodiments of the present invention, the group of symbolscontained in an entropy slice may be multiplexed in a combination of theabove.

Some embodiments of the present invention comprising entropy sliceconstruction based on picture level multiplexing may be understood inrelation to FIG. 8 and FIG. 9. In some embodiments of the presentinvention shown in FIG. 8, prediction data 190 and residual data 192 maybe entropy encoded 194, 196 separately and multiplexed 198 at thepicture level. In some embodiments of the present invention, theprediction data for a picture 190 may be associated with a first entropyslice, and the residual data for a picture 192 may be associated with asecond entropy slice. The encoded prediction data and the encodedentropy data may be decoded in parallel. In some embodiments of thepresent invention, each partition comprising prediction data or residualdata may be partitioned into entropy slices which may be decoded inparallel.

In some embodiments of the present invention shown in FIG. 9, theresidual of each color plane, for example, the luma residual 200 and thetwo chroma residuals 202, 204, may be entropy encoded 206, 208, 210separately and multiplexed 212 at the picture level. In some embodimentsof the present invention, the luma residual for a picture 200 may beassociated with a first entropy slice, the first chroma residual for apicture 202 may be associated with a second entropy slice, and thesecond residual for a picture 204 may be associated with a third entropyslice. The encoded residual data for the three color planes may bedecoded in parallel. In some embodiments of the present invention, eachpartition comprising color-plane residual data may be partitioned intoentropy slices which may be decoded in parallel. In some embodiments ofthe present invention, the luma residual 200 may have relatively moreentropy slices compared to the chroma residuals 202, 204.

In some embodiments of the present invention, an compressed-videobitstream may be trans-coded to comprise entropy slices, therebyallowing for parallel entropy decoding as accommodated by embodiments ofthe present invention described above. Some embodiments of the presentinvention may be described in relation to FIG. 10. An input bitstreamwithout entropy slices may be processed picture-by-picture according toFIG. 10. In these embodiments of the present invention, a picture fromthe input bitstream may be entropy decoded 220. The data which had beencoded, for example, mode data, motion information, residual informationand other data, may be obtained. Entropy slices may be constructed 222one at a time from the data. An entropy-slice header corresponding to anentropy slice may be inserted 224 in a new bitstream. The encoder statemay be reset and the neighbor information defined 226. The entropy slicemay be entropy encoded 228 and written to the new bitstream. If there ispicture data that has not been consumed 232 by the constructed entropyslices, then another entropy slice may be constructed 222, and theprocess 224-230 may continue until all of the picture data has beenconsumed 234 by the constructed entropy slices, and then the nextpicture may be processed.

In some embodiments of the present invention, an encoder may partition areconstruction slice into a plurality of entropy slices wherein the sizeof each entropy slice may be less than, or may not exceed, a fixednumber of bins. In some embodiments wherein the encoder may restrict thesize of each entropy slice, the maximum number of bins may be signaledin the bitstream. In alternative embodiments wherein the encoder mayrestrict the size of each entropy slice, the maximum number of bins maybe defined by the profile and level conformance point of the encoder.For example, Annex A of the H.264/AVC video coding specification may beextended to comprise a definition of the maximum number of bins allowedin an entropy slice.

In some embodiments of the present invention, the maximum number of binsallowed in an entropy slice may be indicated for each level conformancepoint of the encoder according to a table, for example, as shown inTable 2, where M_(m.n) denotes the maximum number of bins allowed in anentropy slice for a level m.n conformance point.

TABLE 2 Maximum Number of Bins per Entropy Slice for Each Level MaximumNumber of Bins Level per Entropy Slice 1.1 M_(1.1) 1.2 M_(1.2) . . . . .. m.n M_(m.n) . . . . . . 5.1 M_(5.1)

Exemplary maximum number of bins allowed in an entropy slice areM_(1.1)=1,000 bins, M_(1.2) =2,000 bins, . . . , and M_(5.1)=40,000bins. Other exemplary maximum number of bins allowed in an entropy sliceare M_(1.1)=2,500 bins, M_(1.2)=4,200 bins, . . . , and M_(5.1)=150,000bins.

In some embodiments, a set of maximum number of bins allowed in anentropy slice may be determined for all levels based on bit rate, imagesize, number of macroblocks and other encoding parameters. In someembodiments of the present invention the maximum number of bins allowedin an entropy slice may be the set to the same number for all levels.Exemplary values are 38,000 bins and 120,000 bins.

In some embodiments of the present invention, an encoder may determine aworst case number of bins associated with a macroblock, and the encodermay write the bins associated with:

$\frac{ESLICE\_ MaxNumberBins}{BinsPerMB},$

macroblocks to each entropy slice, where ESLICE _MaxNumberBins maydenote the maximum number of bins allowed in an entropy slice andBinsPerMB may denote the worst case number of bins associated with amacroblock. In some embodiments, the macroblocks may be selected inraster-scan order. In alternative embodiments, the macroblocks may beselected in another, predefined order. In some embodiments, the worstcase number of bins associated with a macroblock may be a fixed number.In alternative embodiments, the encoder may update the worst case numberbased on measurements of the sizes of previously processed macroblocks.

Some embodiments of the present invention may be described in relationto FIG. 11. In these embodiments, an encoder may, for a reconstructionslice, partition the reconstruction slice into a plurality of entropyslices wherein no entropy slice may be larger in size than apredetermined number of bins. The encoder may initialize 240 to zero acounter associated with the number of bins in a current entropy slice.The counter value may be denoted A for illustrative purposes in theremainder of the description of the embodiments of the present inventiondescribed in relation to FIG. 11. The syntax elements for a nextmacroblock may be obtained 242. The next macroblock may be determinedaccording to a predefined macroblock processing order. In someembodiments, the macroblock processing order may correspond to araster-scan ordering. Non-binary syntax elements in the macroblock maybe converted 244 to a string of bins. Binary syntax elements may notrequire conversion. The number of bins associated with the macroblockmay be determined 246. The number of bins associated with the macroblockmay include the bins in the strings of bins associated with thenon-binary syntax elements in addition to the binary syntax elements,and the number of bins associated with the macroblock may be denoted numfor illustrative purposes in the remainder of the description of theembodiments of the present invention described in relation to FIG. 11.

If the number of bins associated with the macroblock may be added 248 tothe number of already accumulated bins associated with the currententropy slice without 249 exceeding a maximum number of bins allowed foran entropy slice, then the number of accumulated bins associated withthe current entropy slice may be updated 250 to include the binsassociated with the macroblock, and the bins associated with themacroblock may be written 252, by the entropy encoder, to the bitstreamand associated with the current entropy slice. The syntax elements forthe next macroblock may be obtained 242, and the partitioning processmay continue.

If the sum 248 of the number of bins associated with the macroblock andthe number of already accumulated bins associated with the currententropy slice exceeds 253 the maximum number of bins allowed for anentropy slice, then the encoder may start 254 a new entropy sliceassociated with the current reconstruction slice, and the counterassociated with the number of bins in the current entropy slice may beinitialized 256 to zero. The number of accumulated bins associated withthe current entropy slice may be updated 250 to include the binsassociated with the macroblock, and the bins associated with themacroblock may be written 252, by the entropy encoder, to the bitstreamand associated with the current entropy slice. The syntax elements forthe next macroblock may be obtained 242, and the partitioning processmay continue.

Some embodiments of the present invention may be described in relationto FIG. 12. In these embodiments, an encoder may, for a reconstructionslice, partition the reconstruction slice into a plurality of entropyslices wherein no entropy slice may be larger in size than apredetermined maximum number of bins. In these embodiments, the encodermay associate macroblock syntax elements with an entropy slice until thesize of the entropy slice reaches a threshold associated with thepredetermined maximum number of bins allowed in an entropy slice. Insome embodiments, the threshold may be a percentage of the maximumnumber of bins allowed in an entropy slice. In one exemplary embodiment,the threshold may be 90% of the maximum number of bins allowed in anentropy slice, supposing that the greatest number of bins expected in amacroblock is less than 10% of the maximum number of bins. In anotherexemplary embodiment, the threshold may be a percentage of the maximumnumber of bins allowed in an entropy slice wherein the percentage may bebased on the greatest number of bins expected in a macroblock. In theseembodiments, once the size of an entropy slice exceeds a threshold size,then another entropy slice may be created. The threshold size may beselected to ensure that the entropy slice does not exceed the maximumnumber of bins allowed in an entropy slice. In some embodiments, thethreshold size may be a function of the maximum number of bins allowedin an entropy slice and an estimate of the maximum number of binsexpected for a macroblock.

The encoder may initialize 270 to zero a counter associated with thenumber of bins in a current entropy slice. The counter value may bedenoted A for illustrative purposes in the remainder of the descriptionof the embodiments of the present invention described in relation toFIG. 12. The syntax elements for a next macroblock may be obtained 272.The next macroblock may be determined according to a predefinedmacroblock processing order. In some embodiments, the macroblockprocessing order may correspond to a raster-scan ordering. Non-binarysyntax elements in the macroblock may be converted 274 to a string ofbins. Binary syntax elements may not require conversion. The binsassociated with the macroblock may be written 276, by the entropyencoder, to the bitstream and associated with the current entropy slice.The number of bins associated with the macroblock may be determined 278,and the number of accumulated bins associated with the current entropyslice may be updated 280 to include the bins associated with themacroblock. If the number of accumulated bins associated with thecurrent entropy slice is greater than a threshold, which may be denotedTH (MaxNumBins), based on the maximum number of bins allowed in anentropy slice 284, then the encoder may start 286 a new entropy slice,and initialize 288 to zero the counter associated with the number ofbins in a current entropy slice. The syntax elements for the nextmacroblock may be obtained 272, and the partitioning process maycontinue. If the number of accumulated bins associated with the currententropy slice is not greater than the threshold based on the maximumnumber of bins allowed in an entropy slice 283, then the syntax elementsfor the next macroblock may be obtained 272, and the partitioningprocess may continue.

In some embodiments of the present invention, an encoder may start a newreconstruction slice when a predetermined number of macroblocks havebeen assigned to the current reconstruction slice.

Some embodiments of the present invention may be described in relationto FIG. 13. In these embodiments, an encoder may start a newreconstruction slice when a predetermined number of macroblocks havebeen assigned to the current reconstruction slice. The encoder mayinitialize 300 to zero a counter associated with the number ofmacroblocks in a current reconstruction slice. The counter value may bedenoted AMB for illustrative purposes in the remainder of thedescription of the embodiments of the present invention described inrelation to FIG. 13. The encoder may initialize 310 to zero a counterassociated with the number of bins in a current entropy slice. Thecounter value may be denoted ABin for illustrative purposes in theremainder of the description of the embodiments of the present inventiondescribed in relation to FIG. 13. If the counter value of the counterassociated with the number of macroblocks in the current reconstructionslice is not less than a predetermined maximum number of macroblocksallowed in a reconstruction slice 331, then a new entropy slice may bestarted 332, and a new reconstruction slice may be started 334. Themaximum number of macroblocks allowed in a reconstruction slice may bedenoted MaxMBperRSlice for illustrative purposes in the remainder of thedescription of the embodiments of the present invention described inrelation to FIG. 13.

If the counter value of the counter associated with the number ofmacroblocks in the current reconstruction slice is less than thepredetermined maximum number of macroblocks allowed in a reconstructionslice 313, then the syntax elements for a next macroblock may beobtained 314. The next macroblock may be determined according to apredefined macroblock processing order. In some embodiments, themacroblock processing order may correspond to a raster-scan ordering.Non-binary syntax elements in the macroblock may be converted 316 to astring of bins. Binary syntax elements may not require conversion. Thenumber of bins associated with the macroblock may be determined 318. Thenumber of bins associated with the macroblock may include the bins inthe strings of bins associated with the non-binary syntax elements inaddition to the binary syntax elements, and the number of binsassociated with the macroblock may be denoted num for illustrativepurposes in the remainder of the description of the embodiments of thepresent invention described in relation to FIG. 13.

If the number of bins associated with the macroblock may be added 320 tothe number of already accumulated bins associated with the currententropy slice without 321 exceeding a maximum number of bins allowed foran entropy slice, then the number of accumulated bins associated withthe current entropy slice may be updated 322 to include the binsassociated with the macroblock, the bins associated with the macroblockmay be written 324, by the entropy encoder, to the bitstream andassociated with the current entropy slice, and the number of macroblocksassociated with the current reconstruction slice may be incremented 326.The number of macroblocks associated with the current reconstructionslice may be compared 312 to the predetermined maximum number ofmacroblocks allowed in a reconstruction slice, and the partitioningprocess may continue.

If the sum 320 of the number of bins associated with the macroblock andthe number of already accumulated bins associated with the currententropy slice exceeds 327 the maximum number of bins allowed for anentropy slice, then the encoder may start 328 a new entropy sliceassociated with the current reconstruction slice, and the counterassociated with the number of bins in the current entropy slice may beinitialized 330 to zero. The number of accumulated bins associated withthe current entropy slice may be updated 322 to include the binsassociated with the macroblock, the bins associated with the macroblockmay be written 324, by the entropy encoder, to the bitstream andassociated with the current entropy slice, and the number of macroblocksassociated with the current reconstruction slice may be incremented 326.The number of macroblocks associated with the current reconstructionslice may be compared 312 to the predetermined maximum number ofmacroblocks allowed in a reconstruction slice, and the partitioningprocess may continue.

Some embodiments of the present invention may be described in relationto FIG. 14. In these embodiments, an encoder may start a newreconstruction slice when a predetermined number of macroblocks havebeen assigned to the current reconstruction slice. In these embodiments,the encoder may associate macroblock syntax elements with an entropyslice until the size of the entropy slice reaches a threshold associatedwith the predetermined maximum number of bins allowed in an entropyslice. In some embodiments, the threshold may be a percentage of themaximum number of bins allowed in an entropy slice. In one exemplaryembodiment, the threshold may be 90% of the maximum number of binsallowed in an entropy slice, supposing that the greatest number of binsexpected in a macroblock is less than 10% of the maximum number of bins.In another exemplary embodiment, the threshold may be a percentage ofthe maximum number of bins allowed in an entropy slice wherein thepercentage may be based on the greatest number of bins expected in amacroblock. In these embodiments, once the size of an entropy sliceexceeds a threshold size, then another entropy slice may be created. Thethreshold size may be selected to ensure that the entropy slice does notexceed the maximum number of bins allowed in an entropy slice. In someembodiments, the threshold size may be a function of the maximum numberof bins allowed in an entropy slice and an estimate of the maximumnumber of bins expected for a macroblock.

The encoder may initialize 350 to zero a counter associated with thenumber of macroblocks in a current reconstruction slice. The countervalue may be denoted AMB for illustrative purposes in the remainder ofthe description of the embodiments of the present invention described inrelation to FIG. 14. The encoder may initialize 352 to zero a counterassociated with the number of bins in a current entropy slice. Thecounter value may be denoted ABin for illustrative purposes in theremainder of the description of the embodiments of the present inventiondescribed in relation to FIG. 14. If the counter value of the counterassociated with the number of macroblocks in the current reconstructionslice is not less than a predetermined maximum number of macroblocksallowed in a reconstruction slice 373, then a new entropy slice may bestarted 374, and a new reconstruction slice may be started 376. Themaximum number of macroblocks allowed in a reconstruction slice may bedenoted MaxMBperRSlice for illustrative purposes in the remainder of thedescription of the embodiments of the present invention described inrelation to FIG. 14.

If the counter value of the counter associated with the number ofmacroblocks in the current reconstruction slice is less than thepredetermined maximum number of macroblocks allowed in a reconstructionslice 355, then the syntax elements for a next macroblock may beobtained 356. The next macroblock may be determined according to apredefined macroblock processing order. In some embodiments, themacroblock processing order may correspond to a raster-scan ordering.Non-binary syntax elements in the macroblock may be converted 358 to astring of bins. Binary syntax elements may not require conversion. Thebins associated with the macroblock may be written 360, by the entropyencoder, to the bitstream and associated with the current entropy slice.The number of bins associated with the macroblock may be determined 362,and the number of accumulated bins associated with the current entropyslice may be updated 364 to include the bins associated with themacroblock. If the number of accumulated bins associated with thecurrent entropy slice is greater than a threshold, which may be denotedTH (MaxNumBins), based on the maximum number of bins allowed in anentropy slice 369, then the encoder may start 370 a new entropy slice,and initialize 372 to zero the counter associated with the number ofbins in a current entropy slice. The number of macroblocks associatedwith the current reconstruction slice may be incremented 368. The numberof macroblocks associated with the current reconstruction slice may becompared 354 to the predetermined maximum number of macroblocks allowedin a reconstruction slice, and the partitioning process may continue. Ifthe number of accumulated bins associated with the current entropy sliceis not greater than the threshold based on the maximum number of binsallowed in an entropy slice 367, then the number of macroblocksassociated with the current reconstruction slice may be incremented 368,and the number of macroblocks associated with the current reconstructionslice may be compared 354 to the predetermined maximum number ofmacroblocks allowed in a reconstruction slice, and the partitioningprocess may continue.

In alternative embodiments of the present invention, an encoder maypartition a reconstruction slice into a plurality of entropy slices,wherein each entropy slice may be associated with no more than apredefined number of bits.

Some embodiments of the present invention may be described in relationto FIG. 15. In these embodiments, an encoder may, for a reconstructionslice, partition the reconstruction slice into a plurality of entropyslices wherein no entropy slice may be larger in size than apredetermined number of bits. The encoder may initialize 400 to zero acounter associated with the number of bits in a current entropy slice.The counter value may be denoted A for illustrative purposes in theremainder of the description of the embodiments of the present inventiondescribed in relation to FIG. 15. The syntax elements for a nextmacroblock may be obtained 402. The next macroblock may be determinedaccording to a predefined macroblock processing order. In someembodiments, the macroblock processing order may correspond to araster-scan ordering. Non-binary syntax elements in the macroblock maybe converted 404 to a string of bins. Binary syntax elements may notrequire conversion. The bins, converted non-binary elements and binaryelements, associated with the macroblock may be presented to the entropyencoder, and the bins may be entropy encoded 406. The number of bitsassociated with the macroblock may be determined 408. The number of bitsassociated with the macroblock may be denoted num for illustrativepurposes in the remainder of the description of the embodiments of thepresent invention described in relation to FIG. 15.

If the number of bits associated with the macroblock may be added 410 tothe number of already accumulated bits associated with the currententropy slice without 411 exceeding a maximum number of bits allowed foran entropy slice, then the number of accumulated bits associated withthe current entropy slice may be updated 412 to include the bitsassociated with the macroblock, and the bits associated with themacroblock may be written 414 to the bitstream and associated with thecurrent entropy slice. The syntax elements for the next macroblock maybe obtained 402, and the partitioning process may continue.

If the sum 410 of the number of bits associated with the macroblock andthe number of already accumulated bits associated with the currententropy slice exceeds 415 the maximum number of bits allowed for anentropy slice, then the encoder may start 416 a new entropy sliceassociated with the current reconstruction slice, and the counterassociated with the number of bits in the current entropy slice may beinitialized 418 to zero. The number of accumulated bits associated withthe current entropy slice may be updated 412 to include the bitsassociated with the macroblock, and the bits associated with themacroblock may be written 414 to the bitstream and associated with thecurrent entropy slice. The syntax elements for the next macroblock maybe obtained 402, and the partitioning process may continue.

Some embodiments of the present invention may be described in relationto FIG. 16. In these embodiments, an encoder may, for a reconstructionslice, partition the reconstruction slice into a plurality of entropyslices wherein no entropy slice may be larger in size than apredetermined maximum number of bits. In these embodiments, the encodermay associate macroblock syntax elements with an entropy slice until thesize of the entropy slice reaches a threshold associated with thepredetermined maximum number of bits allowed in an entropy slice. Insome embodiments, the threshold may be a percentage of the maximumnumber of bits allowed in an entropy slice. In one exemplary embodiment,the threshold may be 90% of the maximum number of bits allowed in anentropy slice, supposing that the greatest number of bits expected in amacroblock is less than 10% of the maximum number of bits. In anotherexemplary embodiment, the threshold may be a percentage of the maximumnumber of bits allowed in an entropy slice wherein the percentage may bebased on the greatest number of bits expected in a macroblock. In theseembodiments, once the size of an entropy slice exceeds a threshold size,then another entropy slice may be created. The threshold size may beselected to ensure that the entropy slice does not exceed the maximumnumber of bits allowed in an entropy slice. In some embodiments, thethreshold size may be a function of the maximum number of bits allowedin an entropy slice and an estimate of the maximum number of bitsexpected for a macroblock.

The encoder may initialize 440 to zero a counter associated with thenumber of bits in a current entropy slice. The counter value may bedenoted A for illustrative purposes in the remainder of the descriptionof the embodiments of the present invention described in relation toFIG. 16. The syntax elements for a next macroblock may be obtained 442.The next macroblock may be determined according to a predefinedmacroblock processing order. In some embodiments, the macroblockprocessing order may correspond to a raster-scan ordering. Non-binarysyntax elements in the macroblock may be converted 444 to a string ofbins. Binary syntax elements may not require conversion. The binsassociated with the macroblock may be entropy encoded 446, and thenumber of bins associated with the macroblock may be determined 448. Thenumber of accumulated bits associated with the current entropy slice maybe updated 450 to include the bins associated with the macroblock, andthe entropy encoded bins associated with the macroblock may be written452 to the bitstream. If the number of accumulated bits associated withthe current entropy slice is greater than a threshold based on themaximum number of bits allowed in an entropy slice 456, then the encodermay start 458 a new entropy slice, and initialize 460 to zero thecounter associated with the number of bits in a current entropy slice.The syntax elements for the next macroblock may be obtained 442, and thepartitioning process may continue. If the number of accumulated bitsassociated with the current entropy slice is not greater than athreshold based on the maximum number of bits allowed in an entropyslice 455, then the syntax elements for the next macroblock may beobtained 442, and the partitioning process may continue.

In alternative embodiments of the present invention, an encoder maypartition a reconstruction slice into a plurality of entropy slices,wherein each entropy slice may be associated with no more than apredefined number of macroblocks.

In some embodiments of the present invention, a restriction on themaximum number of macroblocks in a reconstruction slice may be imposedin addition to a restriction on the size of an entropy slice.

In some embodiments of the present invention, an encoder may partition areconstruction slice into a plurality of entropy slices, wherein thesize of each entropy slice may be restricted to less than a predefinednumber of macroblocks and to less than a predefined number of bins.

In some embodiments of the present invention, an encoder may partition areconstruction slice into a plurality of entropy slices, wherein thesize of each entropy slice may be restricted to less than a predefinednumber of macroblocks and to less than a predefined number of bits.

In some embodiments of the present invention, an encoder may partition areconstruction slice into a plurality of entropy slices, wherein thesize of each entropy slice may be restricted to less than a predefinednumber of macroblocks, to less than a predefined number of bins and toless than a predefined number of bits.

It is to be understood that while some embodiments of the presentinvention may restrict the size of an entropy slice to be less than afirst predefined size, that the size of the entropy slice may beequivalently restricted to not exceed a second predefined size. Theembodiments described herein are exemplary embodiments of the presentinvention, and a person of ordinary skill in the art will appreciatethat there are equivalent embodiments of the present invention forrestricting the size of an entropy slice.

Table 3 shows a comparison of rate distortion performance for all-intracoding. The first comparison, shown in the two sub-columns of columnthree, is a comparison, using the H.264/AVC Joint Model (JM) software,version 13.0, between encoding using multiple slices, wherein entropydecoding and macroblock reconstruction for a slice does not depend onother slices, and encoding using no slices. On average, for the same bitrate, the quality is degraded by −0.3380 dB encoding using multipleslices over using no slices. On average, for the same quality level, thebit rate is increased by 7% by encoding using multiple slices over usingno slices.

The second comparison, shown in the two sub-columns of column four, is acomparison between encoding using one reconstruction slice partitioned,according to embodiments of the present invention, into multiple entropyslices (two rows of macroblocks per entropy slice) and encoding using JM13.0 with no slices. On average, for the same bit rate, the quality isdegraded by −0.0860 dB using one reconstruction slice with multipleentropy slices over encoding using no slices. On average, for the samequality level, the bit rate is increased by 1.83% by encoding using onereconstruction slice with multiple entropy slices over encoding using noslices.

TABLE 3 Comparison of rate distortion performance - all-intra encodingAll Intra Coding One reconstruction slice with multiple JM 13.0 slicesentropy slices compared to compared to JM JM 13.0 no slices 13.0 noslices BD BD BD BD SNR Bit rate SNR Bit rate Sequence Resolution [dB][%] [dB] [%] BigShip 720p −0.22 4.54 −0.08 1.61 City 720p −0.28 4.03−0.06 0.84 Crew 720p −0.42 11.67 −0.11 2.98 Night 720p −0.38 5.64 −0.060.91 ShuttleStart 720p −0.39 9.12 −0.12 2.81 AVERAGE −0.3380 7.00−0.0860 1.83

Table 4 shows a comparison of rate distortion performance for IBBPcoding. The first comparison, shown in the two sub-columns of columnthree, is a comparison, using the H.264/AVC Joint Model (JM) software,version 13.0, between encoding using multiple slices, wherein entropydecoding and macroblock reconstruction for a slice does not depend onother slices, and encoding using no slices. On average, for the same bitrate, the quality is degraded by −0.5460 dB encoding using multipleslices. On average, for the same quality level, the bit rate isincreased by 21.41% by encoding using multiple slices over using noslices.

The second comparison, shown in the two sub-columns of column four, is acomparison between encoding using one reconstruction slice partitioned,according to embodiments of the present invention, into multiple entropyslices (two rows of macroblocks per entropy slice) and encoding using JM13.0 with no slices. On average, for the same bit rate, the quality isdegraded by −0.31 dB using one reconstruction slice with multipleentropy slices over encoding using no slices. On average, for the samequality level, the bit rate is increased by 11.45% by encoding using onereconstruction slice with multiple entropy slices over encoding using noslices.

TABLE 4 Comparison of rate distortion performance - IBBP encoding IBBPCoding One reconstruction slice with multiple JM 13.0 slices entropyslices compared to compared to JM JM 13.0 no slices 13.0 no slices BD BDBD BD SNR Bit rate SNR Bit rate Sequence Resolution [dB] [%] [dB] [%]BigShip 720p −0.45 19.34 −0.26 10.68 City 720p −0.48 17.83 −0.22 7.24Crew 720p −0.62 30.10 −0.33 14.93 Night 720p −0.36 11.11 −0.19 5.5ShuttleStart 720p −0.82 28.69 −0.55 18.89 AVERAGE −0.5460 21.41 −0.3111.45

Comparing the results, encoding using multiple entropy slices in onereconstruction slice provides a bit rate savings of 5.17% and 9.96% forall-intra and IBBP coding, respectively, over encoding using slices,wherein entropy decoding and macroblock reconstruction for a slice doesnot depend on other slices, although both allow for parallel decoding.

Table 5 shows a comparison of rate distortion performance for all-intraand IBBP coding. In this table, the comparison is a comparison betweenencoding using no slices and encoding using one reconstruction slicepartitioned into entropy slices, according to embodiments of the presentinvention, of maximum size 26 k bins per entropy slice. The firstcomparison, shown in the two sub-columns of column two, is a comparisonusing all-intra coding. On average, for the same bit rate, the qualityis degraded by −0.062 dB by encoding using a reconstruction slice withmultiple entropy slices. On average, for the same quality level, the bitrate is increased by 1.86% by encoding using a reconstruction slice withmultiple entropy slices. Thus, for all-intra coding using entropy slicesof maximum size 26 k bins per entropy slice, there is an average bitrate savings of approximately 0.64% over that of fixed entropy slicesizes of two rows of macroblocks.

The second comparison, shown in the two sub-columns of column three, isa comparison using IBBP coding. On average, for the same bit rate, thequality is degraded by −0.022 dB using one reconstruction slice withmultiple entropy slices over encoding using no slices. On average, forthe same quality level, the bit rate is increased by 0.787% by encodingusing one reconstruction slice with multiple entropy slices overencoding using no slices. Thus, for IBBP coding using entropy slices ofmaximum size 26 k bins per entropy slice, there is an average bit ratesavings of approximately 10.66% over that of fixed entropy slice sizesof two rows of macroblocks.

TABLE 5 Comparison of rate distortion performance - all-intra and IBBPencoding using entropy slices with less than 26k bins per entropy sliceEntropy Slice Compared to JM 15.1 No Slice. Experiment (1): 26k binsmaximum per entropy slice All Intra Coding IBBP Coding BD SNR BD Bitrate BD SNR BD Bit rate Sequence (720p) [dB] [%] [dB] [%] BigShip −0.071.40 −0.02 0.70 City −0.07 1.02 −0.02 0.51 Crew −0.05 1.31 −0.03 1.25Night −0.07 1.00 −0.02 0.66 ShuttleStart −0.05 1.20 −0.03 −0.82 AVERAGE−0.062 1.187 −0.022 0.787

The use of entropy slices allows for parallel decoding, and encoderpartitioning of a reconstruction slice into entropy slices, wherein eachentropy slice is less than a maximum number of bins may provideconsiderable bit rate savings over entropy slices of a fixed number ofmacroblocks.

Although the charts and diagrams in the Figures may show a specificorder of execution, it is understood that the order of execution maydiffer from that which is depicted. For example, the order of executionof the blocks may be changed relative to the shown order. Also, as afurther example, two or more blocks shown in succession in a figure maybe executed concurrently, or with partial concurrence. It is understoodby those with ordinary skill in the art that software, hardware and/orfirmware may be created by one of ordinary skill in the art to carry outthe various logical functions described herein.

The terms and expressions which have been employed in the foregoingspecification are used therein as terms of description and not oflimitation, and there is no intention in the use of such terms andexpressions of excluding equivalence of the features shown and describedor portions thereof, it being recognized that the scope of the inventionis defined and limited only by the claims which follow.

1. A method for encoding a video frame of a video sequence, said methodcomprising: a) in an encoder, partitioning a frame of a video sequenceinto at least one reconstruction slice, thereby producing a firstreconstruction slice; and b) in said encoder, partitioning said firstreconstruction slice into a plurality of entropy slices, wherein thenumber of bins associated with each entropy slice in said plurality ofentropy slices is less than a predefined number of bins.
 2. The methodas described in claim 1, wherein the number of macroblocks associatedwith said first reconstruction slice is less than a predefined number ofmacroblocks.
 3. The method as described in claim 1, wherein the numberof macroblocks associated with each entropy slice in said plurality ofentropy slices is less than a predefined number of macroblocks.
 4. Themethod as described in claim 1, wherein the number of bits associatedwith each entropy slice in said plurality of entropy slices is less thana predefined number of bits.
 5. The method as described in claim 4,wherein the number of macroblocks associated with each entropy slice insaid plurality of entropy slices is less than a predefined number ofmacroblocks.
 6. The method as described in claim 1, wherein saidpredefined number of bins is associated with a profile associated withsaid encoder.
 7. The method as described in claim 1, wherein saidpredefined number of bins is associated with a level conformance pointassociated with said encoder.
 8. The method as described in claim 1,wherein said predefined number of bins depends on at least one parameterselected from the group consisting of bit rate, image size and number ofmacroblocks.
 9. The method as described in claim 1 further comprisingassociating an entropy-slice header with each entropy slice in saidplurality of entropy slices.
 10. The method as described in claim 1further comprising associating an entropy-slice flag with a bitstreamgenerated using said plurality of entropy slices.
 11. A method forencoding a video frame of a video sequence, said method comprising: a)in an encoder, partitioning a frame of a video sequence into at leastone reconstruction slice, thereby producing a first reconstructionslice; and b) in said encoder, partitioning said first reconstructionslice into a plurality of entropy slices, wherein the size of eachentropy slice in said plurality of entropy slices is smaller than apredefined size, wherein said predefined size is related to at least onesize measure selected from the group consisting of number of bits,number of bins and number of macroblocks.
 12. The method as described inclaim 11, wherein the number of macroblocks associated with said firstreconstruction slice is less than a predefined number of macroblocks.13. The method as described in claim 11, wherein said predefined size isassociated with a profile associated with said encoder.
 14. The methodas described in claim 11, wherein said predefined size is associatedwith a level conformance point associated with said encoder.
 15. Themethod as described in claim 11, wherein said predefined size depends onat least one parameter selected from the group consisting of bit rate,image size and total number of macroblocks.
 16. The method as describedin claim 11 further comprising associating an entropy-slice header witheach entropy slice in said plurality of entropy slices.
 17. The methodas described in claim 11 further comprising associating an entropy-sliceflag with a bitstream generated using said plurality of entropy slices18. A method for generating a video bitstream for parallel decoding,said method comprising: a) receiving, at a decoder, a first videobitstream; b) identifying a reconstruction slice in said videobitstream; c) entropy decoding a plurality of symbols from saidreconstruction slice, thereby producing entropy-decoded data associatedwith said reconstruction slice; d) partitioning said entropy-decodeddata associated with said reconstruction slice into a plurality ofentropy slices associated with said reconstruction slice, wherein thesize of each entropy slice in said plurality of entropy slices issmaller than a predefined size, wherein said predefined size is relatedto at least one size measure selected from the group consisting ofnumber of bits, number of bins and number of macroblocks; e)independently entropy encoding the entropy-decoded data of each entropyslice of said plurality of entropy slices, thereby producing a pluralityof entropy-encoded entropy slices; and f) generating a second videobitstream comprising said plurality of entropy-encoded entropy slices.19. A method for decoding a video bitstream, said method comprisingdecoding a plurality of entropy slices associated with a reconstructionslice, wherein the size of each entropy slice in said plurality ofentropy slices is smaller than a predefined size, wherein saidpredefined size is related to at least one size measure selected fromthe group consisting of number of bits, number of bins and number ofmacroblocks.
 20. The method as described in claim 19, wherein saidpredefined size is associated with a profile associated with saidencoder.